<!DOCTYPE html>
<html lang="zh">
    <head>
  <!-- 元数据 -->
  <meta charset="utf-8">
  
  
  <title>处理机调度（操作系统笔记4） | 舛羽的笔记小站</title>
  <meta name="author" content="cy" />
  <meta http-equiv="Cache-Control" content="no-transform" />
  <meta http-equiv="Cache-Control" content="no-siteapp" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="robots" content="index,follow" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <meta name="format-detection" content="telphone=no, email=no" />
  
    <meta name="keywords" content="操作系统" />
  
  <meta name="description" content="本篇笔记将介绍一下处理机调度，这一章会涉及非常多的算法，评判标准，这一章考试的话，会考大题。">
<meta property="og:type" content="article">
<meta property="og:title" content="处理机调度（操作系统笔记4）">
<meta property="og:url" content="http://example.com/2023/01/02/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-4/index.html">
<meta property="og:site_name" content="舛羽的笔记小站">
<meta property="og:description" content="本篇笔记将介绍一下处理机调度，这一章会涉及非常多的算法，评判标准，这一章考试的话，会考大题。">
<meta property="og:locale">
<meta property="og:image" content="https://s2.loli.net/2023/01/03/vmk8YdcqHfz4x67.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/03/Fn1VBZupXlPcg7r.png">
<meta property="article:published_time" content="2023-01-02T14:17:47.000Z">
<meta property="article:modified_time" content="2023-02-13T09:08:42.765Z">
<meta property="article:author" content="cy">
<meta property="article:tag" content="操作系统">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://s2.loli.net/2023/01/03/vmk8YdcqHfz4x67.png">
  
  <!-- 站点验证相关 -->
  
    
    
    
  
  <!-- 样式表文件 -->
  <link rel="stylesheet" id="kratos-css" href="/css/kratosr.min.css" media="all"></script>
  
    <link rel="stylesheet" id="darkmode-css" href="/css/kr-color-dark.min.css" media="(prefers-color-scheme: dark)"></script>
    <script src="/js/kr-dark.min.js"></script>
  
  
    <link rel="stylesheet" id="highlight-css" href="/css/highlight/night-eighties.min.css" media="all"></script>
  
  
  <link rel="stylesheet" id="fontawe-css" href="/vendors/font-awesome@4.7.0/css/font-awesome.min.css" media="all"></script>
  <link rel="stylesheet" id="nprogress-css" href="/vendors/nprogress@0.2.0/nprogress.css" media="all"></script>
  
  
  
    <link rel="stylesheet" href="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css"></script>
  
  <!-- 不得不预先加载的一些JS文件 -->
  <script src="/vendors/jquery@3.6.0/dist/jquery.min.js"></script>
  
    <script src="/vendors/qrcode_js@1.0.0/qrcode.min.js"></script>
  
  
  <style>
    
      .kratos-cover.kratos-cover-2 {
        background-image: url('/images/banner.webp');
      }
    
    
      @media(min-width:768px) {
        body.custom-background {
          background-image: url('/images/bg.webp');
        }
      }
    
  </style>
  
<meta name="generator" content="Hexo 7.3.0"></head>


    <body class="custom-background">
        <div id="kratos-wrapper">
    <div id="kratos-page">
        <div id="kratos-header">
            <header id="kratos-desktop-topnav" class="kratos-topnav">
                <div class="container">
                    <div class="nav-header">
                        <nav id="kratos-menu-wrap">
                            <ul id="kratos-primary-menu" class="sf-menu">
                                
                                    
                                    
                                
                            </ul>
                        </nav>
                    </div>
                </div>
            </header>
            <header id="kratos-mobile-topnav" class="kratos-topnav">
                <div class="container">
                    <div class="color-logo"><a href="/">舛羽的笔记小站</a></div>
                    <div class="nav-toggle">
                        <a class="kratos-nav-toggle js-kratos-nav-toggle">
                            <i></i>
                        </a>
                    </div>
                </div>
            </header>
        </div>
        <div class="kratos-start kratos-hero-2">
            <!-- <div class="kratos-overlay"></div> -->
            <div class="kratos-cover kratos-cover-2 text-center">
                <div class="desc desc2 animate-box">
                    <a href="/">
                        <h2>舛羽的笔记小站</h2> <br />
                        <span></span>
                    </a>
                </div>
            </div>
        </div>

        <div id="kratos-blog-post">
            <div class="container">
                <div id="main" class="row">
                    

        

            <section class="col-md-8">

        

            <article itemscope itemtype="https://schema.org/Article">
    
    <link itemprop="mainEntityOfPage" href="http://example.com/2023/01/02/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-4/">
    <div class="kratos-hentry kratos-post-inner clearfix">
        <header class="kratos-entry-header">
            
                <h1 class="kratos-entry-title text-center" itemprop="name headline">处理机调度（操作系统笔记4）</h1>
            
            
            <ul class="kratos-post-meta text-center">
                <li><time datetime="2023-01-02T14:17:47.000Z" itemprop="datePublished"><i class="fa fa-calendar"></i> 2023-01-02</time></li>
                <li itemprop="author" itemscope itemtype="https://schema.org/Person">
                    <i class="fa fa-user"></i> 作者 <span itemprop="name">cy</span>
                </li>
                <li>
                    <i class="fa fa-edit"></i> 
                    
                    
                        ~3.16K
                    
                    字
                </li>
                
            </ul>
        </header>
        <div class="kratos-post-content">
            
            <div id="expire-alert" class="alert alert-warning hidden" role="alert">
                <div class="icon"><i class="fa fa-warning"></i></div>
                <div class="text"><p>本文最后编辑于 <time datetime="1676279322765"></time> 前，其中的内容可能需要更新。</p></div>
            </div>
            
            
            
            <hr />
            <div itemprop="articleBody"><p>本篇笔记将介绍一下处理机调度，这一章会涉及非常多的算法，评判标准，这一章考试的话，会考大题。</p>
<span id="more"></span>
<h2 id="第四章-处理机调度"><a href="#第四章-处理机调度" class="headerlink" title="第四章 处理机调度"></a>第四章 处理机调度</h2><h3 id="4-1-处理机调度概念"><a href="#4-1-处理机调度概念" class="headerlink" title="4.1  处理机调度概念"></a>4.1  处理机调度概念</h3><p>无论是进程还是作业，他们都是一堆一堆的进入计算机，但是CPU是有极限的，不可能同时处理所有的事，所以我们需要确定某种规则来决定处理的顺序，这就是处理机调度所需要研究的问题。</p>
<h3 id="4-2-调度的三个层次"><a href="#4-2-调度的三个层次" class="headerlink" title="4.2 调度的三个层次"></a>4.2 调度的三个层次</h3><ul>
<li><strong>高级调度（作业调度）</strong>：由于内存空间有限，不可能将用户所提交的所有作业全部放入内存中进行运行，因此需要一定的规则将作业调入内存。主要目的是为了<font color='red'>给作业建立相应的进程</font>，使它们<font color='red'>获得竞争处理机的权枥</font>。高级调度主要是<font color='red'>外存与内存之间的调度</font>。</li>
<li><strong>中级调度（内存调度）</strong>：等引入虚拟存储技术之后，操作系统会将暂时不能运行的进程调至外村等待，等需要时再重新调回内存，为了提高内存利用率和系统吞吐量，暂时调到外存等待的进程为<font color='red'>挂起状态</font>，PCB并不会一起调到外存，会常驻内存。被挂起的进程PCB会被放到的挂起队列。引入挂起态后进程状态变为七状态。<img src="https://s2.loli.net/2023/01/03/vmk8YdcqHfz4x67.png" alt="图片来自https://blog.csdn.net/weixin_43914604/article/details/105323244"></li>
<li><strong>低级调度（进程调度）</strong>：主要任务使按照某种方法和策略从就绪队列中选取一个进程，将处理机分配给他，最基本的一种调度，频率也是最高的。（引入线程后就变成了线程调度）</li>
</ul>
<p>三层调度联系与对比：<img src="https://s2.loli.net/2023/01/03/Fn1VBZupXlPcg7r.png" alt="图片来自https://blog.csdn.net/weixin_43914604/article/details/105323244"></p>
<h3 id="4-3-进程调度时机与切换过程"><a href="#4-3-进程调度时机与切换过程" class="headerlink" title="4.3 进程调度时机与切换过程"></a>4.3 进程调度时机与切换过程</h3><p>进程调度一般发生在两个时机：</p>
<ul>
<li><p>进程主动放弃（来自进程内部）：</p>
<ol>
<li>进程正常终止，退出处理机</li>
<li>运行过程中发生异常终止，此时不得不主动退出处理机</li>
<li>主动的阻塞（比如等待I/O）</li>
</ol>
</li>
<li><p>进程被动放弃：</p>
<ol>
<li>分给进程的时间片用完</li>
<li>有更紧急的事情需要处理（如I/O中断）</li>
<li>有更高优先级的进程进入就绪队列</li>
</ol>
</li>
</ul>
<p>而有三个时间点一定不会发生进程调度：</p>
<ul>
<li>在处理中断的过程中（会开关中断且是原语）</li>
<li>进程在操作系统内核程序临界区中（不能一个进程搁临界区写一半被切换出去吧）</li>
<li>原子操作过程中（原语）</li>
</ul>
<p>进程的切换其实就是中断的过程加上进程调度，总结下来也就两点：</p>
<ol>
<li>对原来运行进程各种数据的保存</li>
<li>对新的进程各种数据的恢复</li>
</ol>
<p>需要注意的是进程切换是有代价的，过于平凡的进程调度切换回时系统的效率降低反而降低并发性</p>
<h3 id="4-4-进程调度方式"><a href="#4-4-进程调度方式" class="headerlink" title="4.4 进程调度方式"></a>4.4 进程调度方式</h3><ul>
<li><p>非剥夺调度泛式（非抢占式）：只能由当前运行的进程主动放弃CPU（实现简单，适用于早期的批处理系统）</p>
</li>
<li><p>剥夺调度方式（抢占式）：可又操作系统剥夺当前进程的CPU使用权（可以优先处理更紧急的进程，也可实现让各进程按时间片流转的功能，适用于做分时操作系统，实时操作系统）</p>
</li>
</ul>
<h3 id="4-5-进程调度算法的指标"><a href="#4-5-进程调度算法的指标" class="headerlink" title="4.5 进程调度算法的指标"></a>4.5 进程调度算法的指标</h3><ul>
<li><h4 id="CPU利用率"><a href="#CPU利用率" class="headerlink" title="CPU利用率"></a>CPU利用率</h4><script type="math/tex; mode=display">
CPU利用率=\frac{忙碌的时间}{总时间}</script></li>
<li><h4 id="系统吞吐量"><a href="#系统吞吐量" class="headerlink" title="系统吞吐量"></a>系统吞吐量</h4><script type="math/tex; mode=display">
系统吞吐量=\frac{总共完成的作业数}{总共花了多少时间}</script></li>
</ul>
<ul>
<li><h4 id="周转时间"><a href="#周转时间" class="headerlink" title="周转时间"></a>周转时间</h4><ul>
<li>周转时间</li>
</ul>
<script type="math/tex; mode=display">
周转时间=作业完成时间-作业提交时间</script><ul>
<li><p>平均周转时间</p>
<script type="math/tex; mode=display">
平均周转时间=\frac{各作业周转时间之和}{作业数}</script></li>
<li><p>带权周转时间</p>
<script type="math/tex; mode=display">
带权周转时间=\frac{作业周转时间}{作业实际运行的时间}</script></li>
<li><p>平均带权周转时间</p>
<script type="math/tex; mode=display">
平均带权周转时间=\frac{各作业带权周转时间之和}{作业数}</script></li>
</ul>
</li>
<li><h4 id="等待时间"><a href="#等待时间" class="headerlink" title="等待时间"></a>等待时间</h4><script type="math/tex; mode=display">
等待时间=处于等待处理机状态时间之和</script></li>
<li><h4 id="响应时间"><a href="#响应时间" class="headerlink" title="响应时间"></a>响应时间</h4><script type="math/tex; mode=display">
响应时间=用户提交的时间点-首次响应的时间点</script></li>
</ul>
<h3 id="4-6-进程调度算法"><a href="#4-6-进程调度算法" class="headerlink" title="4.6 进程调度算法"></a>4.6 进程调度算法</h3><p>这一块涉及非常非常多的题，无论期末还是考研都是重中之重。</p>
<ol>
<li><h4 id="先来先服务（FCFS）"><a href="#先来先服务（FCFS）" class="headerlink" title="先来先服务（FCFS）"></a>先来先服务（FCFS）</h4><ul>
<li>算法思想：主打的就是公平，谁来都得排队</li>
<li>算法规则：按照先后顺序进行服务</li>
<li>适用：作业调度的话看谁见到后备队列，进程调度则看谁先到就绪队列</li>
<li>是否抢占：非抢占式算法</li>
<li>优点：公平，实现简单</li>
<li>缺点：排在长作业后面的短作业需要较长等待时间，带权周转时间很打</li>
<li>是否会导致饥饿：不会</li>
</ul>
</li>
<li><h4 id="短作业优先（SJF）"><a href="#短作业优先（SJF）" class="headerlink" title="短作业优先（SJF）"></a>短作业优先（SJF）</h4><ul>
<li>算法思想：最求最少的平均等待时间，最少的平均周转时间，追杀哦的平均带权周转时间</li>
<li>算法规则：最短（指要求服务时间最短）的作业/进程优先的到服务</li>
<li>适用：作业调度就是短作业优先（SJF），进程调度就是（SPF）</li>
<li>是否抢占：是非抢占式算法，但也有抢占式版本：最短剩余时间优先算法（SRTN）</li>
<li>优点：“最短的”平均等待时间、平均周转时间</li>
<li>缺点：不公平。对短作业有利，长作业不利，可能会导致长作业长期的不到服务，也就是导致饥饿</li>
<li>是否会导致饥饿：会，如果源源不断地有短作业/进程到来，可能使长作业/进程长时间地不到服务，产生<font color='red'>饥饿</font>，如果一直地不到服务则称为<font color='red'>饿死</font></li>
</ul>
</li>
<li><h4 id="高响应比优先（HRRN）"><a href="#高响应比优先（HRRN）" class="headerlink" title="高响应比优先（HRRN）"></a>高响应比优先（HRRN）</h4><ul>
<li><p>算法思想：综合考虑作业/进程地等待时间和要求服务时间</p>
</li>
<li><p>算法规则：在每次调度时计算各个作业进程地相应比，选择最高的为其服务</p>
<script type="math/tex; mode=display">
相应比=\frac{等待时间+要求服务时间}{要求服务时间}</script></li>
<li><p>适用：既可用于进程调度，也可用于作业调度</p>
</li>
<li><p>是否抢占：是非抢占式算法</p>
</li>
<li><p>优点：综合考虑不了等待时间和运行时间，结合了前两个算法的优点，也解决了饥饿</p>
</li>
<li><p>缺点：无明显缺点</p>
</li>
<li><p>是否会导致饥饿：不会</p>
</li>
</ul>
</li>
</ol>
<h4 id="前三个算法的评价："><a href="#前三个算法的评价：" class="headerlink" title="前三个算法的评价："></a>前三个算法的评价：</h4><p>这三个算法主要关心对用户的公平性、平均周转时间、平均等待时间等指标，并不关心相应时间，也不区分任务的紧要程度，导致<font color='red'>交互性很差</font>，适用于<font color='red'>早期的批处理系统</font>。</p>
<ol>
<li><h4 id="时间片轮转（RR）"><a href="#时间片轮转（RR）" class="headerlink" title="时间片轮转（RR）"></a>时间片轮转（RR）</h4><ul>
<li><p>算法思想：公平地轮流为各个进程服务，让每个进程在一定时间间隔内都可以得到相应</p>
</li>
<li><p>算法规则：按照各进程到达就绪队列地顺序，轮流让各个进程执行一个时间片。若进程在一个时间片执行不玩，也要剥夺处理机，将进程重新放到就绪对立对位重新排队</p>
</li>
<li><p>适用：只用于进程调度（只有作业放入内存建立了相应的进程后，才能分配处理机时间片）</p>
<p><font color='red'>个人理解</font>：你不能每次都调一点作业的东西放进内存吧，这样大伙资源都不够，大伙都运行不了（都得死（bushi））</p>
</li>
<li><p>是否抢占：<font color='red'>抢占式</font>算法，通过时钟装置发出的<font color='red'>时钟中断</font>来通知CPU时间片已到，到了还没运行完，就会强行剥夺处理机使用权。</p>
</li>
<li><p>优点：公平，响应快，适用于分时系统</p>
</li>
<li><p>缺点：由于高频率的进程切换，因此有一定开销，不区分任务紧急程度</p>
</li>
<li><p>是否会导致饥饿：不会</p>
</li>
</ul>
</li>
<li><h4 id="优先级调度算法"><a href="#优先级调度算法" class="headerlink" title="优先级调度算法"></a>优先级调度算法</h4><ul>
<li><p>算法思想：实时系统需要根据任务的紧急程度来决定处理顺序</p>
</li>
<li><p>算法规则：调度时选择优先级最高的作业/进程</p>
</li>
<li><p>适用：即可用于作业调度，也可用于进程调度</p>
</li>
<li><p>是否抢占：抢占式，非抢占式都有</p>
</li>
<li><p>优点：用优先级区分，适用于实时操作系统，可灵活调整队各种作业进程的偏好程度</p>
</li>
<li><p>缺点：若源源不断地有高优先级进程到来，则可能导致饥饿</p>
</li>
<li><p>是否会导致饥饿：会</p>
</li>
</ul>
</li>
<li><h4 id="多级反馈队列调度算法"><a href="#多级反馈队列调度算法" class="headerlink" title="多级反馈队列调度算法"></a>多级反馈队列调度算法</h4><ul>
<li>算法思想：对其他算法的折中权衡</li>
<li>算法规则：<ol>
<li>设置多级就绪队列，各级队列优先级从高到低，时间片从小到大</li>
<li>新进程到达时先进入第一级队列，按FCFS原则排队等待被分配时间片，若用完时间片进程还未结束，则进程进入下以及队列队尾</li>
<li>只有等k级队列为空时，才会为k+1级对头的进程分配时间片</li>
</ol>
</li>
<li><p>适用：进程调度</p>
</li>
<li><p>是否抢占：抢占式的算法。在k级队列的进程运行过程中，若更上级的队列(1k1级)中进入了一个新进程，则由于新进程处于优先级更高的队列中，因此新进程会抢占处理机，原来运行的进程放回k级队列队尾。</p>
</li>
<li>优点：用优先级区分，适用于实时操作系统，可灵活调整队各种作业进程的偏好程度</li>
<li>缺点：对各类型进程相对公平(FCFS的优点)：每个新到达的进程都可以很快就得到响应(RR的优点)；短进程只用较少的时间就可完成(SPF的优点)：不必实现估计进程的运行时间（避免用户作假）：可灵活地调整对各类进程的偏好程度，比如CPU密集型进程、I/O密集型进程（拓展：可以将因/O而阻塞的进程重新放回原队列，这样I/O型进程就可以保持较高优先级)</li>
<li>是否会导致饥饿：会</li>
</ul>
</li>
</ol>
<h4 id="后三个算法的评价："><a href="#后三个算法的评价：" class="headerlink" title="后三个算法的评价："></a>后三个算法的评价：</h4><p>这三个算法更注重系统的响应时间、公平性、平衡性，满足交互式系统需求，适用于交互式系统</p>
<h3 id="注："><a href="#注：" class="headerlink" title="注："></a>注：</h3><p>本章算法等知识需要做题巩固。</p>
</div>
        </div>
        
            <div class="kratos-copyright text-center clearfix">
                <h5 itemprop="copyrightNotice">本作品采用 <a rel="license nofollow" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">知识共享署名-相同方式共享 4.0 国际许可协议</a> 进行许可</h5>
            </div>
        
        <footer class="kratos-entry-footer clearfix">
            
                <div class="post-like-donate text-center clearfix" id="post-like-donate">
                
                
                    <a class="share" href="javascript:;"><i class="fa fa-share-alt"></i> 分享</a>
                    <div class="share-wrap" style="display: none;">
    <div class="share-group">
        <a href="javascript:;" class="share-plain qq" onclick="share('qq');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-qq"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain qzone" onclick="share('qzone');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-star"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain weixin pop style-plain" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-weixin"></i>
            </div>
            <div class="share-int">
                <div class="qrcode" id="wechat-qr"></div>
                <p>打开微信“扫一扫”，打开网页后点击屏幕右上角分享按钮</p>
            </div>
        </a>
        <a href="javascript:;" class="share-plain weibo" onclick="share('weibo');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-weibo"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain facebook style-plain" onclick="share('facebook');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-facebook"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain twitter style-plain" onclick="share('twitter');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-twitter"></i>
            </div>
        </a>
    </div>
    <script type="text/javascript">
        $(()=>{
            new QRCode("wechat-qr", {
                text: "http://example.com/2023/01/02/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-4/",
                width: 150,
                height: 150,
                correctLevel : QRCode.CorrectLevel.H
            });
        });
        function share(dest) {
            const qqBase        = "https://connect.qq.com/widget/shareqq/index.html?";
            const weiboBase     = "https://service.weibo.com/share/share.php?";
            const qzoneBase     = "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?";
            const facebookBase  = "https://www.facebook.com/sharer/sharer.php?";
            const twitterBase   = "https://twitter.com/intent/tweet?";
            const hostUrl       = "http://example.com/2023/01/02/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-4/";
            const title         = "「处理机调度（操作系统笔记4）」";
            const excerpt       = `本篇笔记将介绍一下处理机调度，这一章会涉及非常多的算法，评判标准，这一章考试的话，会考大题。`;
            let _URL;
            switch (dest) {
                case "qq"       : _URL = qqBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy";     break;
                case "weibo"    : _URL = weiboBase+"url="+hostUrl+"&title="+title+excerpt;                                 break;
                case "qzone"    : _URL = qzoneBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy";  break;
                case "facebook" : _URL = facebookBase+"u="+hostUrl;                                                        break;
                case "twitter"  : _URL = twitterBase+"text="+title+excerpt+"&url="+hostUrl;                                break;
            }
            window.open(_URL);
        };
    </script>
</div>
                
                </div>
            
            <div class="footer-tag clearfix">
                <div class="pull-left">
                <i class="fa fa-tags"></i>
                    <a class="tag-none-link" href="/tags/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" rel="tag">操作系统</a>
                </div>
                <div class="pull-date">
                    <time datetime="2023-02-13T09:08:42.765Z" itemprop="dateModified">最后编辑：2023-02-13</time>
                </div>
            </div>
        </footer>
    </div>
    
        <nav class="navigation post-navigation clearfix" role="navigation">
            
            <div class="nav-previous clearfix">
                <a title=" 线程（操作系统笔记3）" href="/2023/01/01/操作系统笔记/操作系统笔记-3/">&lt; 上一篇</a>
            </div>
            
            
            <div class="nav-next clearfix">
                <a title=" 进程同步与互斥（操作系统笔记5）" href="/2023/01/04/操作系统笔记/操作系统笔记-5/">下一篇 &gt;</a>
            </div>
            
        </nav>
    
    
</article>

        

            </section>

        

                
            

<section id="kratos-widget-area" class="col-md-4 hidden-xs hidden-sm">
    <!-- 文章和页面根据splitter来分割，没有的话就从头开始设置为sticky -->
    
    
                <aside id="krw-about" class="widget widget-kratos-about clearfix">
    <div class="photo-background"></div>
    <div class="photo-wrapper clearfix">
        <div class="photo-wrapper-tip text-center">
            <img class="about-photo" src="/images/avatar.webp" loading="lazy" decoding="auto" />
        </div>
    </div>
    <div class="textwidget">
        <p class="text-center"></p>
    </div>
    <div class="site-meta">
        <a class="meta-item" href="/archives/">
            <span class="title">
                文章
            </span>
            <span class="count">
                39
            </span>
        </a>
        <a class="meta-item" href="/categories/">
            <span class="title">
                分类
            </span>
            <span class="count">
                7
            </span>
        </a>
        <a class="meta-item" href="/tags/">
            <span class="title">
                标签
            </span>
            <span class="count">
                10
            </span>
        </a>
    </div>
</aside>
            
                    <div class="sticky-area">
                
                
  <aside id="krw-categories" class="widget widget-kratos-categories clearfix">
    <h4 class="widget-title"><i class="fa fa-folder"></i>分类目录</h4>
      <ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/C-%E7%9F%A5%E8%AF%86/">C#知识</a><span class="category-list-count">9</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/Lua/">Lua</a><span class="category-list-count">10</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/Unity%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/">Unity网络游戏开发</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/">宝可梦小说</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/">操作系统笔记</a><span class="category-list-count">10</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%AC%94%E8%AE%B0/">数据结构笔记</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E9%9A%8F%E6%83%B3/">随想</a><span class="category-list-count">1</span></li></ul>
  </aside>


            
                
  <aside id="krw-tags" class="widget widget-kratos-tags clearfix">
    <h4 class="widget-title"><i class="fa fa-tags"></i>标签聚合</h4>
      <div class="tag-clouds">
        <a href="/tags/C/" style="font-size: 0.75em;">C#</a> <a href="/tags/Lua/" style="font-size: 0.8em;">Lua</a> <a href="/tags/unity/" style="font-size: 0.65em;">unity</a> <a href="/tags/%E5%AE%9D%E5%8F%AF%E6%A2%A6/" style="font-size: 0.7em;">宝可梦</a> <a href="/tags/%E5%BD%B1%E8%AF%84/" style="font-size: 0.6em;">影评</a> <a href="/tags/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" style="font-size: 0.8em;">操作系统</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" style="font-size: 0.6em;">数据结构</a> <a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 0.6em;">算法</a> <a href="/tags/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F/" style="font-size: 0.65em;">网络游戏</a> <a href="/tags/%E9%9A%8F%E6%83%B3/" style="font-size: 0.6em;">随想</a>
      </div>
  </aside>

            
                
  <aside id="krw-posts" class="widget widget-kratos-posts">
  <h4 class="widget-title"><i class="fa fa-file"></i>最新文章</h4>
  <div class="tab-content">
      <ul class="list-group">
        
        
          
          
            <a class="list-group-item" href="/2025/10/08/%E9%9A%8F%E6%83%B3/%E3%80%8A%E6%98%9F%E4%B8%89%E5%9B%BD%E3%80%8B%E5%90%90%E6%A7%BD/"><i class="fa  fa-book"></i> 《星三国》吐槽</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/14/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B45/"><i class="fa  fa-book"></i> 宝可梦小说第五章</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/13/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B44/"><i class="fa  fa-book"></i> 宝可梦小说第四章</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/10/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B43/"><i class="fa  fa-book"></i> 宝可梦小说第三章</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/09/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B42/"><i class="fa  fa-book"></i> 宝可梦小说第二章</a>
            
          
        
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
      </ul>
  </div>
  </aside>

            
    </div>
</section>
        
        </div>
    </div>
</div>
<footer>
    <div id="footer"  >
        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-3 footer-list text-center">
                    <ul class="kratos-social-icons">
                        
                        
                        
                        
                        
                        
                        
                        
                        
                    </ul>
                    <ul class="kratos-copyright">
                        <div>
                            <li>&copy; 2025 舛羽的笔记小站 版权所有.</li>
                            <li>本站已运行<span id="span_dt">Loading...</span></li>
                        </div>
                        <div>
                            <li>Theme <a href="https://github.com/Candinya/Kratos-Rebirth" target="_blank">Kratos:Rebirth</a></li>
                            <li>Site built with&nbsp;<i class="fa fa-heart throb" style="color:#d43f57"></i>&nbsp;by cy.</li>
                        </div>
                        <div>
                            <li>Powered by <a href="https://hexo.io" target="_blank" rel="nofollow">Hexo</a></li>
                            <li>Hosted on <a href="https://github.io" target="_blank">Github Pages</a></li>
                        </div>
                        <div>
                            
                            
                        </div>
                    </ul>
                </div>
            </div>
        </div>
        <div class="kr-tool text-center">
            <div class="tool">
                
                    <div class="box search-box">
                        <a href="/search/">
                            <span class="fa fa-search"></span>
                        </a>
                    </div>
                
                
                    <div class="box theme-box" id="darkmode-switch">
                        <span class="fa fa-adjust"></span>
                    </div>
                
                
            </div>
            <div class="box gotop-box">
                <span class="fa fa-chevron-up"></span>
            </div>
        </div>
    </div>
</footer>
</div>
</div>

        <script defer src="/vendors/bootstrap@3.3.4/dist/js/bootstrap.min.js"></script>
<script defer src="/vendors/nprogress@0.2.0/nprogress.js"></script>
<script>
    if (!window.kr) {
        window.kr = {};
    }
    window.kr.notMobile = (!(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)));
    window.kr.siteRoot = "/";
</script>


    <script async src="/js/candy.min.js"></script>




    <script defer src="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>

<script defer src="/vendors/clipboard@2.0.6/dist/clipboard.min.js"></script>
<script defer src="/js/kratosr.min.js"></script>
<script defer src="/js/pjax.min.js"></script>



<!-- Extra support for third-party plguins  -->


    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ["$","$"], ["\\(","\\)"] ],
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
            processEscapes: true
        }
    });
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax();
        for (var i = 0; i < all.length; ++i)
            all[i].SourceElement().parentNode.className += ' has-jax';
    });
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML
"></script>
</body>
</html>